From 3ae4c898bca6ae3c6ea44c098b04d04b72a48ec4 Mon Sep 17 00:00:00 2001 From: robertl Date: Fri, 7 Apr 2006 03:18:12 +0000 Subject: [PATCH] More pulling at the autoconf rope. Tree builds on OS X and Linux with or without expat and with our without libusb. But things are still very klunky. --- gpsbabel/Makefile.in | 13 +++------ gpsbabel/coastexp.c | 25 ++++++++--------- gpsbabel/configure.in | 25 ++++++++++++++--- gpsbabel/hsa_ndv.c | 54 ++++++++++++++++++------------------- gpsbabel/ignrando.c | 37 ++++++++++++------------- gpsbabel/jeeps/gpslibusb.c | 4 ++- gpsbabel/jeeps/gpsusbstub.c | 2 +- 7 files changed, 88 insertions(+), 72 deletions(-) diff --git a/gpsbabel/Makefile.in b/gpsbabel/Makefile.in index 25f4dc36e..f6e5a6331 100644 --- a/gpsbabel/Makefile.in +++ b/gpsbabel/Makefile.in @@ -15,11 +15,6 @@ VERSIOND=$(VERSD)$(RELEASE) # INHIBIT_EXPAT=-DNO_EXPAT LIBEXPAT=-lexpat # -lefence -# USB may required non-standard libraries (like libusb) be installed -# and may not be available on all OSes. Uncomment this to remove the key -# parts of USB from the build. -LIBUSB=-lusb - # Space is significant, because MSVC wants no space between switch and arg (-Fofoo.o) # but cc/gcc does: # $(OUTPUT_SWITCH)main.o @@ -33,11 +28,11 @@ OUTPUT_SWITCH=-o # OPTIMIZATION=-O $(EXTRA_OPTIMIZATION) DEBUGGING=-g $(EXTRA_DEBUGGING) # add -DDEBUG_MEM to turn on memory allocation logging -CFLAGS=$(EXTRA_CFLAGS) $(DEBUGGING) -Icoldsync $(INHIBIT_EXPAT) $(INHIBIT_USB) $(OPTIMIZATION) +CFLAGS=$(EXTRA_CFLAGS) $(DEBUGGING) -Icoldsync $(INHIBIT_EXPAT) $(INHIBIT_USB) $(OPTIMIZATION) -I/sw/include INSTALL_TARGETDIR=/usr/local/ -#OTHER_ROOT=/opt/local # For DarwinPorts on OSX -OTHER_ROOT=/sw # Uncomment For Fink on OS X. +# OTHER_ROOT=/opt/local # For DarwinPorts on OSX +# OTHER_ROOT=/sw # Uncomment For Fink on OS X. FMTS=magproto.o gpx.o geo.o mapsend.o mapsource.o garmin_tables.o \ gtm.o \ @@ -61,7 +56,7 @@ JEEPS=jeeps/gpsapp.o jeeps/gpscom.o \ jeeps/gpsmath.o jeeps/gpsmem.o \ jeeps/gpsprot.o jeeps/gpsread.o \ jeeps/gpsrqst.o jeeps/gpssend.o jeeps/gpsserial.o jeeps/gpsutil.o \ - jeeps/gpsusbread.o jeeps/gpsusbsend.o jeeps/gpsusbstub.o $(OSJEEPS) + jeeps/gpsusbread.o jeeps/gpsusbsend.o $(OSJEEPS) # Extra modules in Jeeps that we don't use # jeeps/gpsfmt.o jeeps/gpsinput.o jeeps/gpsproj.o diff --git a/gpsbabel/coastexp.c b/gpsbabel/coastexp.c index a7909b896..55359c6f2 100755 --- a/gpsbabel/coastexp.c +++ b/gpsbabel/coastexp.c @@ -38,18 +38,6 @@ static FILE *ofd; #define MY_TBUF 64 #define MY_XBUF 128 -#if !HAVE_LIBEXPAT -void -ce_rd_init(const char *fname) -{ - fatal(MYNAME ": This build excluded CoastalExplorer support because expat was not installed.\n"); -} - -void -ce_read(void) -{ -} -#else static char *element; // Current element being parsed static char *cdatastr; // Current XML character data being built up (until a ) @@ -128,6 +116,19 @@ ce_free_route(ce_route *route) // Don't free the waypoint since this is done elsewhere } +#if !HAVE_LIBEXPAT +void +ce_rd_init(const char *fname) +{ + fatal(MYNAME ": This build excluded CoastalExplorer support because expat was not installed.\n"); +} + +void +ce_read(void) +{ +} +#else + /* Start processing an XML item */ static void ce_start(void *data, const char *el, const char **attr) diff --git a/gpsbabel/configure.in b/gpsbabel/configure.in index 130428f23..7d09faab0 100644 --- a/gpsbabel/configure.in +++ b/gpsbabel/configure.in @@ -28,9 +28,24 @@ AC_CHECK_LIB([m], [cos]) AC_MSG_CHECKING(for libusb) if test "$with_libusb" = no ; then AC_MSG_RESULT(check not done) - AC_DEFINE(NO_USB, "1") else - AC_CHECK_LIB([usb], [usb_open]) + AC_CHECK_PROG(LIBUSBCONFIG, libusb-config, true, false) + if test "$LIBUSBCONFIG" = false; then + AC_MSG_ERROR([libusb-config not found in $PATH]) + fi; + OLDFLAGS=$LDFLAGS + OCFLAGS=$CFLAGS + LDFLAGS="$LDFLAGS `libusb-config --libs`" + CFLAGS="$OCFLAGS `libusb-config --cflags`" + + AC_CHECK_LIB([usb], [usb_interrupt_read], + [USB_FLAGS="`libusb-config --cflags`"] + [LDFLAGS="$LDFLAGS `libusb-config --libs`"], + [AC_MSG_ERROR([libusb >= 0.1.8 is needed])] + ) + CFLAGS="$OCFLAGS" + LIBS="$LIBS `libusb-config --libs`" + AC_CHECK_LIB([usb], [usb_interrupt_read]) fi AC_MSG_CHECKING(for random stuff to make you feel better) @@ -40,7 +55,10 @@ AC_MSG_CHECKING(for libexpat) if test "$with_libexpat" = no ; then AC_MSG_RESULT(check not done) else - AC_CHECK_LIB([expat], [XML_ParserCreate]) +# AC_CHECK_LIB([expat], [XML_ParserCreate]) + AC_CHECK_LIB(expat, XML_ParserCreate, EXPAT_LIB="-lexpat", + AC_CHECK_LIB(expat, XML_ParserCreate, EXPAT_LIB="-lexpat", [], "-L/sw/lib -I/sw/include"), "-L/sw/lib -I/sw/include") + AC_CHECK_LIB(expat, XML_ParserCreate) fi # Checks for header files. @@ -72,5 +90,4 @@ AC_HEADER_STDC # doc/Makefile # mingw/Makefile]) AC_CONFIG_FILES([Makefile]) -# AC_CONFIG_HEADER(config.h) AC_OUTPUT diff --git a/gpsbabel/hsa_ndv.c b/gpsbabel/hsa_ndv.c index 4bdf7b1a1..92a91fb47 100644 --- a/gpsbabel/hsa_ndv.c +++ b/gpsbabel/hsa_ndv.c @@ -37,6 +37,7 @@ static char *routeName = "ROUTENAME"; #define ATTR_SHIPNAME "shpnam" static void readVersion4( FILE* pFile); +static void getAttr(const char *data, const char *attr, char **val, char seperator); static FILE *fd; static FILE *ofd; @@ -91,33 +92,6 @@ hsa_ndv_start(void *data, const char *el, const char **attr) memset(cdatastr,0, MY_CBUF); } -static void getAttr(const char *data, const char *attr, char **val, char seperator) -{ - char *start; - if ((start = strstr(data, attr)) != NULL) - { - char *end; - int len; - - end = strchr(start, seperator); - if (end == NULL) - { - end = start + strlen(start);//assume we are teh last attr - } - - len = end-start - strlen(attr); - - *val = xcalloc(len+1, 1); - memcpy(*val, start+strlen(attr), len); - (*val)[len] = '\0'; - } - else - { - *val = xcalloc(1, 1); - (*val)[0] = '\0'; - } -} - static void hsa_ndv_end(void *data, const char *el) { @@ -277,6 +251,32 @@ hsa_ndv_read(void) #endif +static void getAttr(const char *data, const char *attr, char **val, char seperator) +{ + char *start; + if ((start = strstr(data, attr)) != NULL) + { + char *end; + int len; + + end = strchr(start, seperator); + if (end == NULL) + { + end = start + strlen(start);//assume we are teh last attr + } + + len = end-start - strlen(attr); + + *val = xcalloc(len+1, 1); + memcpy(*val, start+strlen(attr), len); + (*val)[len] = '\0'; + } + else + { + *val = xcalloc(1, 1); + (*val)[0] = '\0'; + } +} static void hsa_ndv_rd_deinit(void) { diff --git a/gpsbabel/ignrando.c b/gpsbabel/ignrando.c index 152e686c6..382660cef 100644 --- a/gpsbabel/ignrando.c +++ b/gpsbabel/ignrando.c @@ -51,24 +51,6 @@ static arglist_t ignr_args[] = ARG_TERMINATOR }; -static xg_callback ignr_start; -static xg_callback ignr_nb_etapes, ignr_descr; -static xg_callback ignr_etape_begin, ignr_etape_end; -static xg_callback ignr_etape_pos, ignr_etape_alt; - -static -xg_tag_mapping ignr_xml_map[] = -{ - { ignr_start, cb_start, "/RANDONNEE" }, - { ignr_nb_etapes, cb_cdata, "/RANDONNEE/INFORMATIONS/NB_ETAPES" }, - { ignr_descr, cb_cdata, "/RANDONNEE/INFORMATIONS/DESCRIPTION" }, - { ignr_etape_begin, cb_start, "/RANDONNEE/ETAPE" }, - { ignr_etape_end, cb_end, "/RANDONNEE/ETAPE" }, - { ignr_etape_pos, cb_cdata, "/RANDONNEE/ETAPE/POSITION" }, - { ignr_etape_alt, cb_cdata, "/RANDONNEE/ETAPE/ALTITUDE" }, - { NULL, 0, NULL } -}; - #if ! HAVE_LIBEXPAT static void @@ -89,6 +71,25 @@ ignr_rd_deinit(void) #else + +static xg_callback ignr_start; +static xg_callback ignr_nb_etapes, ignr_descr; +static xg_callback ignr_etape_begin, ignr_etape_end; +static xg_callback ignr_etape_pos, ignr_etape_alt; + +static +xg_tag_mapping ignr_xml_map[] = +{ + { ignr_start, cb_start, "/RANDONNEE" }, + { ignr_nb_etapes, cb_cdata, "/RANDONNEE/INFORMATIONS/NB_ETAPES" }, + { ignr_descr, cb_cdata, "/RANDONNEE/INFORMATIONS/DESCRIPTION" }, + { ignr_etape_begin, cb_start, "/RANDONNEE/ETAPE" }, + { ignr_etape_end, cb_end, "/RANDONNEE/ETAPE" }, + { ignr_etape_pos, cb_cdata, "/RANDONNEE/ETAPE/POSITION" }, + { ignr_etape_alt, cb_cdata, "/RANDONNEE/ETAPE/ALTITUDE" }, + { NULL, 0, NULL } +}; + static void ignr_xml_error(int condition) { diff --git a/gpsbabel/jeeps/gpslibusb.c b/gpsbabel/jeeps/gpslibusb.c index 0183ffc06..ccc07f356 100644 --- a/gpsbabel/jeeps/gpslibusb.c +++ b/gpsbabel/jeeps/gpslibusb.c @@ -22,8 +22,9 @@ #include #include -#include #include "../config.h" +#if HAVE_LIBUSB +#include #include "gps.h" #include "garminusb.h" @@ -254,3 +255,4 @@ void garmin_usb_scan(void) fatal("Found no Garmin USB devices.\n"); } } +#endif /* HAVE_LIBUSB */ diff --git a/gpsbabel/jeeps/gpsusbstub.c b/gpsbabel/jeeps/gpsusbstub.c index c902ed628..f8c677afc 100644 --- a/gpsbabel/jeeps/gpsusbstub.c +++ b/gpsbabel/jeeps/gpsusbstub.c @@ -19,9 +19,9 @@ */ -#if NO_USB #include "garminusb.h" +#if !HAVE_LIBUSB const char no_usb[] = "USB suport is not available in this build.\n"; int -- 2.30.2